#include <iostream>
#include <vector>
using namespace std;
//class person 
//{
//public:
//	int age;
//	string name;
//	bool sex;
//};
//
//class student : public person
//{
//public:
//	string _stunum;
//};
//
//class teacher : public person
//{
//public:
//	string _teanum;
//};
 // 

//class Base {
//public:
//    int publicMember;
//protected:
//    int protectedMember;
//private:
//    int privateMember;
//};
//class Derived : public Base {
//    // public继承下：
//    // publicMember仍然是public
//    // protectedMember仍然是protected
//    // privateMember不可见
//public:
//    void accessProtectedMember() {
//        protectedMember = 10; // 在成员函数中访问protected成员
//    }
//};
//class Dervied2 : public Derived {
//public:
//    void accessProtectedMember2() {
//        protectedMember = 20; // 在成员函数中访问protected成员
//        //privateMember不可见
//    }
//};

//template<class T>
//class stack : public vector<T>
//{
//public:
//    void push(const T& x)
//    {
//        vector<T>::push_back(x);//指定类域
//    }
//    void pop()
//    {
//        vector<T>::pop_back();
//    }
//    const T& top()
//    {
//        return vector<T>::back();
//    }
//    bool empty()
//    {
//        return vector<T>::empty();
//    }
//};

//double x = 1.2;
//int x1 = x;
//int& x2 = x;//在进行类型转换时，会有一个临时变量，临时变量具有常性，会导致权限放大
//const int& x3 = 3;

//class person
//{
//protected:
//	void print()
//	{
//		cout << name << endl;
//	}
//	string name = "11111";
//};
//
//class student : public person
//{
//public:
//	void print()
//	{
//		cout << name << endl;
//	}
//	void fun1()
//	{
//		person::print();
//	}
//	string name = "22222";
//};
//


//class A
//{
//public:
//	void fun()
//	{
//		cout << "func()" << endl;
//	}
//};
//class B : public A
//{
//public:
//	void fun(int i)
//	{
//		cout << "func(int i)" << i << endl;
//	}
//};
//int main()
//{
//	B b;
//	b.fun(10);
//	b.fun();
//	return 0;
//};

// class person
// {
// public:
// 	person()
// 	{
// 		age = 10;
// 	}
// 	person(int age)
// 	{
// 		this->age = age;
// 	}
// 	person(const person& p)
// 	{
// 		cout << "copy" << endl;
// 		age = 20;
// 	}
// 	person& operator=(const person& p)
// 	{
// 		cout << "operator=age" << endl;
// 		this->age = p.age;
// 		return *this;
// 	}
// protected:
// 	int age;
// };

// class stu : public person
// {
// public:
// 	stu(int age)
// 	{
// 		this->age = age;
// 	}
// 	void getage()
// 	{
// 		cout << person::age << endl;
// 	}
// 	stu& operator=(const stu& p)
// 	{
// 		cout << "operator=nu" << endl;
// 		this->nu = p.nu;
// 		//因为隐藏需要显式调用
// 		person::operator=(p);
// 		return *this;
// 	}
// protected:
// 	int nu;
// };

// class person final
// {
// public:
// 	//
// };


// class person 
// {
// public:
// 	int ax = 0;
// private:
// 	person()
// 	{
// 		ax = 1;
// 	}
// };

// class student;//提前声明student类

// class person
// {
// public:
// 	friend void show(const person& a1, const student& a2);//定义友元
// private:
// 	int age;
// };

// class student
// {
// public:
// 	int id;
// };

// void show(const person& a1,const student& a2)
// {
// 	cout << a1.age << endl;
// 	//cout << a2.id << endl;友元关系无法继承
// }
	

// class base1
// {
// public:
// 	int a1;
// };
// class base2
// {
// public:
// 	int a2;
// };

// class son12 : public base1, public base2
// {
// public:
// 	int a12;
// };

// class base1
// {
// public:
// 	int a;
// };
// class son1 : public base1
// {
// public:
// 	int a1;
// };
// class son2 : public base1
// {
// public:
// 	int a2;
// };
// class son12 : public son1, public son2
// {
// public:
// 	int a12;
// };

class base1
{
public:
	int a;
};
class son1 : virtual public base1
{
public:
	int a1;
};
class son2 : virtual public base1
{
public:
	int a2;
};
class son12 : public son1, public son2
{
public:
	int a12;
};

int main()
{

	return 0;
}
